package com.skeleton.server.user.service.impl;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.skeleton.common.base.dto.ResultDto;
import com.skeleton.common.base.service.impl.BaseServiceImpl;
import com.skeleton.db.dao.ILoginHistoryDao;
import com.skeleton.db.dao.IUserinfoDao;
import com.skeleton.db.dto.LoginHistoryDto;
import com.skeleton.db.dto.UserinfoDto;
import com.skeleton.db.entity.LoginHistory;
import com.skeleton.db.entity.Userinfo;
import com.skeleton.server.user.service.IUserService;
import com.skeleton.utils.SystemConstants;

@Service
public class UserServiceImpl extends BaseServiceImpl implements IUserService {

	@Resource
	private IUserinfoDao iUserinfoDao;
	@Resource
	private ILoginHistoryDao iLoginHistoryDao;

	@Override
	public ResultDto doLogin(UserinfoDto uDto, LoginHistoryDto lhDto) {
		logger.debug("-------UserServiceImpl---doLogin-----------------");
		ResultDto rd = new ResultDto();
		LoginHistory lhEntity = lhDto.toEntity();

		Userinfo uEntity = uDto.toEntity();
		Userinfo u = iUserinfoDao.selectUserinfoByLogin(uEntity);

		if (u == null) {
			if (iUserinfoDao.selectUserinfoByLoginname(uEntity) != null) {
				iLoginHistoryDao.insert(lhEntity);
			}

			rd.setSuccess(false);
			rd.setErrorMSG("用户名或密码错误");
		} else {
			UserinfoDto ud = u.toDto();

			lhEntity.setStatus(SystemConstants.USER_LOGIN_STATUS_SUCCESS);
			iLoginHistoryDao.insert(lhEntity);

			rd.setSuccess(true);
			rd.addToDtoMap("UserinfoDto", ud);
		}

		return rd;
	}

	@Override
	public ResultDto doSimpleRegist(UserinfoDto uDto) {
		logger.debug("-------UserServiceImpl---doSimpleRegist-----------------");
		ResultDto rd = new ResultDto();

		Userinfo uEntity = uDto.toEntity();
		if (iUserinfoDao.selectUserinfoByLoginname(uEntity) != null) {
			rd.setSuccess(false);
			rd.setErrorMSG("登录名已被注册，请更换登录名。");
		} else {
			iUserinfoDao.insert(uEntity);
			rd.setSuccess(true);
		}

		return rd;
	}

	@Override
	public ResultDto getUserinfoByLoginname(UserinfoDto uDto) {
		logger.debug("-------UserServiceImpl---getUserinfoByLoginname-----------------");
		ResultDto rd = new ResultDto();

		Userinfo uEntity = uDto.toEntity();
		Userinfo user = iUserinfoDao.selectOneById(uEntity);
		UserinfoDto ud = user.toDto();

		rd.addToDtoMap("UserinfoDto", ud);
		rd.setSuccess(true);

		return rd;
	}

}
